package com.shangguosha.model.cards;

import com.shangguosha.model.Character;
import com.shangguosha.model.enums.Suit;

/**
 * 杀卡牌
 */
public class Kill extends BasicCard {
    
    public Kill(String id, String name, Suit suit, int number) {
        super(id, name, suit, number, "对其他角色造成1点伤害");
    }
    
    @Override
    public boolean canUse(Character player, Character target) {
        if (player == null || target == null) {
            return false;
        }
        
        // 不能对自己使用
        if (player.equals(target)) {
            return false;
        }
        
        // 目标必须存活
        if (!target.isAlive()) {
            return false;
        }
        
        // TODO: 检查距离限制
        // TODO: 检查每回合使用次数限制
        
        return true;
    }
    
    @Override
    public void use(Character player, Character target) {
        if (!canUse(player, target)) {
            return;
        }
        
        // 发出杀的事件
        emit("kill_used", player, target, this);
        
        // TODO: 等待目标响应（闪）
        // 现在直接造成伤害
        target.takeDamage(1);
        
        System.out.printf("%s 对 %s 使用了【杀】，造成1点伤害%n", 
                player.getName(), target.getName());
    }
    
    @Override
    public String getEffectDescription() {
        return "对其他角色造成1点伤害";
    }
    
    @Override
    public Kill clone() {
        return new Kill(getId() + "_clone", getName(), getSuit(), getNumber());
    }
}